#ifndef {{ className.upper }}_H_
#define {{ className.upper }}_H_

#include "FormalParser.h"
#include "../ast_visitor.hpp"
#include "../json_visitor_helper.hpp"

/**
  @brief The {{ className }} class
  
  @date Auto generated on {% now "yyyy/MM/dd hh:mm:ss" %}
*/
namespace cyclone::parser
{

class {{ className }} : public AstVisitor<{{ returnType }}>
{
public:
        {{ returnType }} visit(ParseTree *ctx);
		{{ returnType }} visit(TerminalNode *ctx);
		{{ returnType }} visit(ErrorNode *ctx);
    {{ returnType }} visit(Token *ctx);
		{{ returnType }} defaultResult();

        {% for contextName in contextNames %}
         {{ returnType }}  visit ( FormalParser::{{ contextName }} * ctx ) ;
        {% endfor %}

};

} // namespace cyclone::parser

#endif // {{ className.upper }}_H_{{ rand }}
